from collections import deque


# Реализуем стек с помощью класса deque из библиотеки collections
# Автор: Дьяконов Е.Н.
# Дебагер: Алексеенко М.В.

class Stack:
    def __init__(self):
        self.stack = deque()  # используем двустороннюю очередь

    def pop(self):
        """
        Метод удаляющий верхний элемент стека.
        Стек изменяется.
        Возвращает:
            верхний элемент стека, если стек не пустой, иначе None.
        """
        if len(self.stack) == 0:
            return None
        return self.stack.pop()

    def push(self, item):
        """
        Метод добавляющий элемент на вершину стека.
        Стек изменяется.

        Параметры:
            item: элемент, который нужно добавить на вершину стека.
        """
        self.stack.append(item)

    def is_empty(self):
        """
        Метод проверки стека на пустоту.

        Возвращает:
            True, если стек пустой, иначе False.
        """
        return len(self.stack) == 0

    def peek(self):
        """
        Метод возвращает верхний элемент стека, но не удаляет его.
        Стек не меняется.

        Возвращает:
            верхний элемент стека, если стек не пустой, иначе None.
        """
        if len(self.stack) == 0:
            return None
        return self.stack[-1]


def check_stack(text):
    """
    Функция для проверки корректности скобочной последовательности в тексте.

    Параметры:
        text (str): строка для проверки.

    Возвращает:
        True, если скобочная последовательность корректна, иначе False.
    """
    stack = Stack()
    for char in text:
        if char in "({[":
            stack.push(char)
        elif char in ")}]":
            s = stack.pop()
            if (char == ")" and s != "(") or (char == "}" and s != "{") or (char == "]" and s != "["):
                return False
    return stack.is_empty()


print(check_stack("(())"))
print(check_stack("()()"))
print(check_stack("(()))"))
print(check_stack("(()()"))
print(check_stack("<{}[<>]>"))
print(check_stack("<{<[]>}>"))
print(check_stack("<{{}}>"))
print(check_stack("[()][()]"))
print(check_stack("<>[{}][<>()]"))
print(check_stack("[{(<>)}]"))
print(check_stack("([][(<>)][])"))
print(check_stack("(<>)[(<>){(<>)}(<>)]"))